import router from './index'
import { useUserStore } from '@/stores/user'
import { message } from 'ant-design-vue'
import { getToken } from '@/utils/auth'

const whiteList = ['/login'] // 白名单

router.beforeEach(async (to, from, next) => {
  const userStore = useUserStore()
  const hasToken = getToken() // 直接从localStorage获取token

  if (hasToken) {
    if (to.path === '/login') {
      // 已登录且要跳转的页面是登录页
      next({ path: '/' })
    } else {
      // 已登录访问其他页面
      if (!userStore.userInfo) {
        try {
          // 获取用户信息
          const userInfo = await userStore.getUserInfo()
          if (userInfo) {
            next({ ...to, replace: true })
          } else {
            // 获取用户信息失败，清除token并跳转到登录页
            await userStore.logout()
            message.error('获取用户信息失败')
            next(`/login?redirect=${to.path}`)
          }
        } catch (error: any) {
          // 获取用户信息失败，清除token并跳转到登录页
          await userStore.logout()
          message.error(error.message || '获取用户信息失败')
          next(`/login?redirect=${to.path}`)
        }
      } else {
        next()
      }
    }
  } else {
    if (whiteList.includes(to.path)) {
      // 在免登录白名单中，直接进入
      next()
    } else {
      // 其他没有访问权限的页面将被重定向到登录页面
      next(`/login?redirect=${to.path}`)
    }
  }
}) 